package com.qsw.qswcommonlib.bean;

/**
 * APP内存使用情况封装
 */
public class AppMemoryInfo {
    private int othersMemory;
    private int codeMemory;
    private int stackMemory;
    private int graphicsMemory;
    private int nativeMemory;
    private int javaMemory;

    public AppMemoryInfo() {
    }

    /**
     * 获取其它内存占用，应用使用的系统不确定如何分类的内存。
     * 单位kb
     *
     * @return 其它内存占用，单位kb
     */
    public int getOthersMemory() {
        return othersMemory;
    }

    /**
     * 获取其它内存占用，应用使用的系统不确定如何分类的内存。
     * 单位Mb
     *
     * @return 其它内存占用，单位Mb
     */
    public float getOthersMemoryM() {
        return othersMemory / 1024F;
    }

    /**
     * 设置其它内存占用，应用使用的系统不确定如何分类的内存。
     * 单位kb
     *
     * @param othersMemory 其它内存占用，单位kb
     */
    public void setOthersMemory(int othersMemory) {
        this.othersMemory = othersMemory;
    }

    /**
     * 设置其它内存占用，应用使用的系统不确定如何分类的内存。
     * 单位kb
     *
     * @param othersMemory 其它内存占用，单位kb，必须为Integer的字符串形式
     */
    public void setOthersMemory(String othersMemory) {
        this.othersMemory = Integer.valueOf(othersMemory);
    }

    /**
     * 获取代码内存占用，应用用于处理代码和资源（如 dex 字节码、经过优化或编译的 dex 代码、.so 库和字体）的内存。
     * 单位kb
     *
     * @return 代码内存占用，单位kb
     */
    public int getCodeMemory() {
        return codeMemory;
    }

    /**
     * 获取代码内存占用，应用用于处理代码和资源（如 dex 字节码、经过优化或编译的 dex 代码、.so 库和字体）的内存。
     * 单位Mb
     *
     * @return 代码内存占用，单位Mb
     */
    public float getCodeMemoryM() {
        return codeMemory / 1024F;
    }

    /**
     * 设置代码内存占用，应用用于处理代码和资源（如 dex 字节码、经过优化或编译的 dex 代码、.so 库和字体）的内存。
     * 单位kb
     *
     * @return 代码内存占用，单位kb
     */
    public void setCodeMemory(int codeMemory) {
        this.codeMemory = codeMemory;
    }

    /**
     * 设置代码内存占用，应用用于处理代码和资源（如 dex 字节码、经过优化或编译的 dex 代码、.so 库和字体）的内存。
     * 单位kb
     *
     * @return 代码内存占用，单位kb，必须为Integer的字符串形式
     */
    public void setCodeMemory(String codeMemory) {
        this.codeMemory = Integer.valueOf(codeMemory);
    }

    /**
     * 获取堆栈内存占用，应用中的原生堆栈和Java堆栈使用的内存。这通常与应用运行多少线程有关。
     * 单位kb
     *
     * @return 堆栈内存占用，单位kb
     */
    public int getStackMemory() {
        return stackMemory;
    }

    /**
     * 获取堆栈内存占用，应用中的原生堆栈和Java堆栈使用的内存。这通常与应用运行多少线程有关。
     * 单位Mb
     *
     * @return 堆栈内存占用，单位Mb
     */
    public float getStackMemoryM() {
        return stackMemory / 1024F;
    }

    /**
     * 获取堆栈内存占用，应用中的原生堆栈和Java堆栈使用的内存。这通常与应用运行多少线程有关。
     * 单位kb
     *
     * @return 堆栈内存占用，单位kb
     */
    public void setStackMemory(int stackMemory) {
        this.stackMemory = stackMemory;
    }

    /**
     * 获取堆栈内存占用，应用中的原生堆栈和Java堆栈使用的内存。这通常与应用运行多少线程有关。
     * 单位kb
     *
     * @return 堆栈内存占用，单位kb，必须为Integer的字符串形式
     */
    public void setStackMemory(String stackMemory) {
        this.stackMemory = Integer.valueOf(stackMemory);
    }

    /**
     * 获取图形内存占用，图形缓冲区队列向屏幕显示像素（包括 GL 表面、GL 纹理等等）所使用的内存。（注意，这是与 CPU 共享的内存，不是 GPU 专用内存。）。
     * 单位kb
     *
     * @return 图形内存占用，单位kb
     */
    public int getGraphicsMemory() {
        return graphicsMemory;
    }

    /**
     * 获取图形内存占用，图形缓冲区队列向屏幕显示像素（包括 GL 表面、GL 纹理等等）所使用的内存。（注意，这是与 CPU 共享的内存，不是 GPU 专用内存。）。
     * 单位Mb
     *
     * @return 图形内存占用，单位Mb
     */
    public float getGraphicsMemoryM() {
        return graphicsMemory / 1024F;
    }

    /**
     * 获取图形内存占用，图形缓冲区队列向屏幕显示像素（包括 GL 表面、GL 纹理等等）所使用的内存。（注意，这是与 CPU 共享的内存，不是 GPU 专用内存。）。
     * 单位kb
     *
     * @return 图形内存占用，单位kb
     */
    public void setGraphicsMemory(int graphicsMemory) {
        this.graphicsMemory = graphicsMemory;
    }

    /**
     * 获取图形内存占用，图形缓冲区队列向屏幕显示像素（包括 GL 表面、GL 纹理等等）所使用的内存。（注意，这是与 CPU 共享的内存，不是 GPU 专用内存。）。
     * 单位kb
     *
     * @return 图形内存占用，单位kb，必须为Integer的字符串形式
     */
    public void setGraphicsMemory(String graphicsMemory) {
        this.graphicsMemory = Integer.valueOf(graphicsMemory);
    }

    /**
     * 获取Native内存占用，从C或C++代码分配的对象的内存，即使应用中不使用C++，也可能会看到此处使用的一些原生内存。
     * 因为比如处理图像资源和其他图形时，Android框架会使用原生内存处理各种任务。单位kb
     *
     * @return Native内存占用，单位kb
     */
    public int getNativeMemory() {
        return nativeMemory;
    }

    /**
     * 获取Native内存占用，从C或C++代码分配的对象的内存，即使应用中不使用C++，也可能会看到此处使用的一些原生内存。
     * 因为比如处理图像资源和其他图形时，Android框架会使用原生内存处理各种任务。
     * 单位Mb
     *
     * @return Native内存占用，单位Mb
     */
    public float getNativeMemoryM() {
        return nativeMemory / 1024F;
    }

    /**
     * 获取Native内存占用，从C或C++代码分配的对象的内存，即使应用中不使用C++，也可能会看到此处使用的一些原生内存。
     * 因为比如处理图像资源和其他图形时，Android框架会使用原生内存处理各种任务。单位kb
     *
     * @return Native内存占用，单位kb
     */
    public void setNativeMemory(int nativeMemory) {
        this.nativeMemory = nativeMemory;
    }

    /**
     * 获取Native内存占用，从C或C++代码分配的对象的内存，即使应用中不使用C++，也可能会看到此处使用的一些原生内存。
     * 因为比如处理图像资源和其他图形时，Android框架会使用原生内存处理各种任务。单位kb
     *
     * @return Native内存占用，单位kb，必须为Integer的字符串形式
     */
    public void setNativeMemory(String nativeMemory) {
        this.nativeMemory = Integer.valueOf(nativeMemory);
    }

    /**
     * 获取Java内存占用，从Java或Kotlin代码分配的对象的内存。
     * 单位kb
     *
     * @return Java内存占用，单位kb
     */
    public int getJavaMemory() {
        return javaMemory;
    }

    /**
     * 获取Java内存占用，从Java或Kotlin代码分配的对象的内存。
     * 单位Mb
     *
     * @return Java内存占用，单位Mb
     */
    public float getJavaMemoryM() {
        return javaMemory / 1024F;
    }

    /**
     * 获取Java内存占用，从Java或Kotlin代码分配的对象的内存。
     * 单位kb
     *
     * @return Java内存占用，单位kb
     */
    public void setJavaMemory(int javaMemory) {
        this.javaMemory = javaMemory;
    }

    /**
     * 获取Java内存占用，从Java或Kotlin代码分配的对象的内存。
     * 单位kb
     *
     * @return Java内存占用，单位kb，必须为Integer的字符串形式
     */
    public void setJavaMemory(String javaMemory) {
        this.javaMemory = Integer.valueOf(javaMemory);
    }
}
